python参数(或者函数传参)前面的单星*或双星**的使用介绍

您所在的位置:网站首页 python 函数参数为字典 python参数(或者函数传参)前面的单星*或双星**的使用介绍

python参数(或者函数传参)前面的单星*或双星**的使用介绍

2024-07-15 10:56| 来源: 网络整理| 查看: 265

1、问题描述   当我们在使用python进行编码时,发现里面有单星号或者双星号,总是分不清楚他们的区别,这也导致不知道我们如何去使用它。下面,我将介绍单星号或者双星号的使用情况。 2、单星号使用情况 (1)元组解包   在对一个元组进行解包时,变量的数量必须和元组中的元素的数量一致;也可以在变量前边添加一个星号,这样变量将会获取元组中所有剩余的元素。 代码如下:

my_tuple = 10, 20, 30, 40 a, b, *c = my_tuple # 输出:10 20 [30, 40] print(a, b, c)

(2)用于不定长参数传参   在定义函数时,可以在形参前边加上一个*,这样这个形参将会获取到所有的实参。   比如:*nums会接受所有的位置实参,并且会将这些实参统一保存到一个元组中(装包)。代码如下:

# 参数以元组(tuple)的形式导入 def sum1(*nums): # 定义一个变量,来保存结果 result = 0 # 遍历元组,并将元组中的数进行累加 for n in nums: result += n print(result) # 执行,输出:6 sum(1,2,3) 1、带星号的形参只能有一个,可以和其他参数配合使用。 # 第一个参数给a,第二个参数给b,剩下的都保存到c的元组中 def fn1(a, b, *c): print('a =', a) print('b =', b) print('c =', c) # 执行 #输出结果如下:参数c包含两个数据3,4。 #a = 1 #b = 2 #c = (3, 4) """ fn1(1, 2, 3, 4) 2、可变参数不是必须写在最后,但是注意,带*的参数后的所有参数,必须以关键字参数的形式传递。 # 第一个参数给a,剩下的位置参数给b的元组,c必须使用关键字参数。 def fn2(a, *b, c): print('a =', a) print('b =', b) print('c =', c) # 执行,参数c以关键字参数传递。 """ 输出结果如下: a = 1 b = (2, 3) c = 4 """ fn2(1, 2, 3, c=4)

3、双星号使用情况 双星号(**):**kwargs表示将参数以字典的形式导入。 (1)接收其他的关键字参数,它会将这些参数统一保存到一个字典中。   字典的key就是参数的名字,字典的value就是参数的值。

def fn3(a, b, **c): print('a =', a) print('b =', b) print('c =', c) """ 输出: a = 1 b = 2 c = {'c': 3, 'd': 4} # 是一个字典类型的数据 """ fn3(a=1, b=2, c=3, d=4) """ 输出: a = 1 b = 2 c = {'c': 3, 'd': 4} """ fn3(1, 2, c=3, d=4)

(2)对字典进行一个解包

def fn4(a, b, c): print('a =', a) print('b =', b) print('c =', c) # 创建一个字典 d = {'a': 100, 'b': 200, 'c': 300} """ 输出: a = 100 b = 200 c = 300 """ fn4(**d)

(3)这两个用法可以同时出现在一个函数中

""" 输出: 1 2 (3, 4) {'e': 5, 'f': 6, 'g': 7} """ def foo(a, b=10, *args, **kwargs): print(a) print(b) print(args) print(kwargs) foo(1, 2, 3, 4, e=5, f=6, g=7) **形参只能有一个,并且必须写在所有参数的最后。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3